package com.sxj.corejava.code09_集合.Map;

import java.util.Enumeration;
import java.util.Properties;
import java.util.Set;

/**
 * @author 石小俊
 */
public class Test04_Properties {

    public static void main(String[] args) {
        // Properties集合没有泛型,其key与value默认都是Object
        Properties properties = new Properties();
//        properties.put(1,"aaa");
//        properties.put("2",10);
//        properties.put("3","33");
        System.out.println(properties);

        // 除了可以使用父类提供方法以外,本身也有一些方法
        // 在使用Properties集合的时候,由于其没有指定泛型,理论上可以是Object类型
        // 但是在实际开发中,使用到Properties的场景全部都是字符串
        // 因此,Properties集合本身提供的方法均是基于字符串的
        // 相当于<String,String>
        // setProperty(String key,String value):存储一组键值对数据
        properties.setProperty("id", "1");
        properties.setProperty("name", "admin");
        properties.setProperty("age", "20");
        String id = properties.getProperty("id");
        String name = properties.getProperty("name");
        System.out.println(id);
        System.out.println(name);
        // 当存储的数据的key或者value不是字符串的时候,无法通过getProperty获取
        System.out.println(properties.getProperty("1"));
        // 只能通过与put对应的方法get进行获取
        System.out.println(properties.get(1));
        System.out.println(properties.getProperty("2"));
        System.out.println(properties.get("2"));
        System.out.println(properties.getProperty("3"));
        System.out.println("*******************");
        // 遍历方式与Hashtable一致
        Set<Object> objects = properties.keySet();
        for (Object key : objects) {
//            System.out.println("key:"+key+",value:"+properties.get(key));
            System.out.println("key:" + key + ",value:" + properties.getProperty((String) key));
        }

        System.out.println("***********************");
        Enumeration<Object> en = properties.keys();
        while (en.hasMoreElements()) {
            String key = (String) en.nextElement();
            String value = (String) properties.get(key);
            System.out.println("key:" + key + ",value:" + value);
        }
    }

}
